The test of software applications (to verify their correctness, completeness and quality) is a very critical process. The problem is particular acute in large software applications, especially with distributed architecture. Moreover, the complexity of the test process strongly increases when the software applications are intended to run in heterogeneous network environments, or when they have multi-tier structures (as typical of modern web applications).
The definition of a generic test process commonly requires the specification of a number of test scenarios, each one for verifying a selected feature (for example, consisting of a set of test cases relating to a component of the software application). A manager (such as a team-leader) in charge of the test process must define the test scenarios and then design a strategy for their execution; particularly, this involves the allocation of the available resources (such as human testers) to the required activities.
The management of the test process is nowadays a substantial manual task. Indeed, although some tools are available for automating the execution of specific operations, all the activities relating to the development, planning, scheduling and reporting of the test process still remain in charge of the team-leader. Typically, the above-mentioned activities are based on an investigation process, which requires a heavy human intervention.
Particularly, the definition of an execution strategy for the test scenarios strongly depends on the skill of the team-leader; in any case, the obtained results are not repeatable and prone to errors.
Moreover, the documentation of any phase of the test process remains based on a specification in prose. Therefore, this makes it very difficult to convey and/or share the desired information; moreover, it is almost impossible to perform any objective analysis of the test process.
The above-mentioned drawbacks also have a detrimental impact on the optimal allocation of the testers. Indeed, it is very difficult (if not impossible) for the team-leader to decide how to exploit the testers so as to ensure an effective execution of the test process.
All of the above adversely affects the cost and the quality of the test process; this hinders the extensive application of the test process, with a negative repercussion on the reliability of the software applications.